#include "compile_run.hpp"
#include "../comm/httplib.h"

using namespace ns_compile_and_run;
using namespace httplib;

void Usage(char* proc)
{
    std::cout<<"Usage: "<<"\n\t"<<proc<<"port"<<std::endl;
}
int main(int argc,char *argv[])
{
    if(argc!=2)
    {
        Usage(argv[1]);
        return 1;
    }

    Server svr;
    svr.Post("/complie_and_run",[](const Request& req,Response &resp){
        //用户请求的服务正文使我们要的json string
        std::cout<<"debug"<<std::endl;
        std::string in_json=req.body;
        std::string out_json;
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json,&out_json);
            resp.set_content(out_json,"application/json;charset=utf_8");
        }
    });
    // svr.set_base_dir("./wwwroot");
    svr.listen("0.0.0.0", atoi(argv[1])); //启动http服务
    


    //  For Test
    // std::string in_json;
    // Json::Value in_value;
    // in_value["code"] = R"(#include <iostream>
    // int main()
    // {
    //     std::cout << "hello lijunhua" << std::endl;
    //     return 0;    
    // }
    //     )";
    // in_value["input"]="";
    // in_value["cpu_limit"]=1;
    // in_value["mem_limit"] = 10240*3;
    
    // Json::FastWriter writer;
    // in_json =writer.write(in_value);

    // std::string out_json;
    // CompileAndRun::Start(in_json,&out_json);
                   
    // std::cout << out_json << std::endl;

    // return 0;
}